package offer;

import java.util.HashSet;
import java.util.Set;

/**
 * @author ZhanBo
 * @date 2020/6/20
 */
public class Solution61 {

    public static void main(String[] args) {
        System.out.println(isStraight(new int[]{1, 2, 3, 4, 5}));
    }

    /**
     * 剑指 Offer 61. 扑克牌中的顺子
     * 从扑克牌中随机抽5张牌，判断是不是一个顺子，即这5张牌是不是连续的。
     * 2～10为数字本身，A为1，J为11，Q为12，K为13，而大、小王为 0 ，可以看成任意数字。A 不能视为 14。
     *
     * 输入: [1,2,3,4,5]
     * 输出: True
     *
     * @param nums
     * @return
     */
    public static boolean isStraight(int[] nums) {
        Set<Integer> repeat = new HashSet<>();
        int max = 0, min = 14;
        for(int num : nums) {
            if(num == 0) {
                // 跳过大小王
                continue;
            }
            // 最大牌
            max = Math.max(max, num);
            // 最小牌
            min = Math.min(min, num);
            if(repeat.contains(num)) {
                // 若有重复，提前返回 false
                return false;
            }
            // 添加此牌至 Set
            repeat.add(num);
        }
        // 最大牌 - 最小牌 < 5 则可构成顺子
        return max - min < 5;
    }
}
